SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE PROCEDURE [dbo].[LIQEstimuloAbril]
@Agente int,
@Servicio int,
@Plaza int,
@Resultado float output,
@idLiquidacion int,
@DiasALiquidar int,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
 AS 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- LOS AGENTES QUE NO LES CORRESPONDE EL ESTIMULO SIGUEN SALIENDO... HAY QUE RESTAR LOS ESTIMOS
-- DE LOS AGENTES QUE APARECEN EN ESTA TABLA
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SET NOCOUNT ON
SET DATEFORMAT DMY

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 18/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Declare @MontoEstimulo Float
Declare @TotalRemunerativo float
Declare @Afiliacion int, @regimensalarial  int, @organizacion int, @situacionrevista int
Declare @DescAporte float
Declare @NroError int
Declare @SubOrganizacion Int
Declare @CargoSalarial Int, @Porcentaje Int, @Estimulo Float, @Horas Int, @TotalEstimulo Float, @TotalEstimuloEstado Float, @EstimuloTemporal Float
Declare @SueldoBasico Float
Declare @DiasPeriodo Int
Declare @EstimuloNoEducativo Float

SELECT @Estimulo = 0.0, @EstimuloTemporal = 0.0, @TotalEstimulo = 0.0, @TotalEstimuloEstado = 0.0, @EstimuloNoEducativo = 0.0

-- Total del Estimulo que se viene liquidando
SELECT @TotalEstimulo = IsNull(Sum(MontoHaberes),0.0) From tb_RegistroDeLiquidaciones R
	INNER JOIN Tb_Liquidaciones  L On idLiquidacion = Liquidacion
	WHERE Concepto = 37 And R.Agente = @Agente And L.Hasta = @Hasta

-- Total del Estimulo que se liquido desde el estado
Select @TotalEstimuloEstado = IsNull(Monto,0) From EstimuloDeDocentes280 Where Agente = @Agente

-- Total del Estimulo que se le liquido desde el estado fuera del sistema educativo

Select @MontoEstimulo = 280.00

Select @CargoSalarial = CargoSalarial, @Horas = Horas From tb_ServiciosAgentes Where idServicioAgente = @Servicio

Select @Porcentaje = Porcentaje From tb_PorcentajesDeEstimulo Where idCargo = @CargoSalarial

Select @SueldoBasico = MontoHaberes From tb_RegistroDeLiquidaciones Where Concepto = 4 And Servicio = @Servicio And Liquidacion = @idLiquidacion

--Select @EstimuloNoEducativo = Sum(Monto) From tb_AgentesConEstimulo Where Agente = @Agente

If @Porcentaje Is Null
	Select @Estimulo = @MontoEstimulo
Else	
	Select @Estimulo = (@MontoEstimulo * @Porcentaje) / 100

If @CargoSalarial In (2901, 3001)
	Select @Estimulo = (@Horas * @MontoEstimulo) / 15

If @CargoSalarial In (4001)
	Select @Estimulo = (@Horas * @MontoEstimulo) / 12	

-- Select @TotalEstimulo = @TotalEstimulo + @TotalEstimuloEstado

If @TotalEstimuloEstado = @MontoEstimulo --Or @TotalEstimulo = 120
	Select @Estimulo = 0.0
Else
Begin
	If (@TotalEstimuloEstado + @TotalEstimulo) < @MontoEstimulo
	Begin
		If (@TotalEstimuloEstado + @TotalEstimulo + @Estimulo) > @MontoEstimulo
		Begin
			--If @TotalEstimulo > @Estimulo
			--Begin
				Select @EstimuloTemporal = @MontoEstimulo - (@TotalEstimuloEstado + @TotalEstimulo)
				If @EstimuloTemporal < @Estimulo
					Select @Estimulo = @EstimuloTemporal
			--End
			--Else
			--Begin	
			--	If @Estimulo + @TotalEstimulo + @TotalEstimuloEstado > @MontoEstimulo
			--	Begin
			--		Select @EstimuloTemporal = @MontoEstimulo - (@TotalEstimuloEstado + @TotalEstimulo)
			--		If @EstimuloTemporal < @Estimulo
			--			Select @Estimulo = @EstimuloTemporal
			--	End
			--	Else
			--	Begin
			--		Select  @EstimuloTemporal = @MontoEstimulo - (@TotalEstimuloEstado + @Estimulo)
			--		If @EstimuloTemporal < @Estimulo
			--			Select @Estimulo = @EstimuloTemporal
			--	End
			--End
		End
	End
	Else
		Select @Estimulo = 0.0
End

PRINT 'AGENTE '+CONVERT(VARCHAR, @AGENTE)+': '+CONVERT(VARCHAR, @ESTIMULO)

Select @diasPeriodo = datediff(day,@desde,@hasta)
Select @Estimulo = (@DiasALiquidar * @Estimulo) /  @diasPeriodo

Select @Afiliacion = idAfiliacion from tb_Afiliaciones where idAgente = @Agente
Select @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion from tb_Plazas where idPlaza = @Plaza
Select @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista from tb_ServiciosAgentes where idservicioAgente =  @Servicio

If (Select OrganizacionLiquidadora From tb_SubOrganizaciones Where idSubOrganizacion = @SubOrganizacion) Is Not Null
	Select @Organizacion = OrganizacionLiquidadora From tb_SubOrganizaciones Where idSubOrganizacion = @SubOrganizacion

If @SueldoBasico > 0
	insert into tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
	values (null, @Afiliacion, @Agente, null, 1, null, 37, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, @Estimulo, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)

Select @NroError = @@error

if @NroError <> 0
	insert into tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio) values
	(@Agente, 37, convert(varchar,@NroError), getdate(), @idLiquidacion, @Organizacion, @Servicio)

GO
